Large data centers are often used to provide computing services to a number of organizations who may have varied computing requirements. A data center generally includes a collection of server-class data processing systems (“servers”) that are configured and networked to accommodate various application needs. Service Level Agreements (SLAs) define the level of computing capacity that the data center is expected to provide to an application. The SLA may address storage requirements, transaction throughput, availability and many other variables.
A data center allows multiple applications to be hosted on a collection of shared computing resources based on the resource needs of the applications. The resources may be configured for sharing while protecting each resource domain against unauthorized access from another domain. The resources may be configured based on applications' resource needs and the architecture of each application. For example, a common architecture for a web service system is a tiered structure including a first tier of web servers, a second tier of application servers, and a third tier of database servers. Within each tier multiple machines may be provisioned to share the incoming workload.
The success of a data center may be judged not only by the level of service provided to the customer organizations, but also by the level of efficiency with which the data center is able to meet customer demands. It may be desirable for a data center to assemble the amount of resources required by the SLAs, plus some reserve capacity to allow for temporary needs for additional resources or to allow for some small amount of growth. However, the amount of resources required by a customer for some periods of time may be less than the amount specified in the SLA, which may imply that the data center has idle resources for these periods. A data center having too many idle resources may be unprofitable or unable to compete with other data centers with respect to cost of services. The present invention may address various issues related to effectively managing the resources of a data center.